package com.yungu.swift.system.marketing.service;

import com.yungu.swift.base.ResponseData;
import com.yungu.swift.base.service.BaseService;
import com.yungu.swift.system.marketing.model.dto.MarketingCouponDto;
import com.yungu.swift.system.marketing.model.dto.MarketingGiftDto;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * Copyright © 厦门云谷互联信息有限公司 2018-2020 All Right Reserved
 * <p>
 * 优惠券管理业务逻辑处理接口
 * 重写add 方法
 *
 * @author xiuyin.cui - Generate
 * @version 1.1.0-SNAPSHOT
 * @since 2019-04-25 13:50
 */
public interface MarketingCouponService extends BaseService<MarketingCouponDto> {
    /**
     * 查询扩展
     *
     * @param params 参数
     * @return List
     */
    ResponseData<List<MarketingCouponDto>> listExtend(Map<String, Object> params);

    /**
     * 根据礼包id获取对应的优惠券信息
     *
     * @param giftUuid 参数
     * @return List
     */
    ResponseData<List<MarketingCouponDto>> listByGiftUuid(String giftUuid);

    /**
     * 根据礼包获取对应的有效优惠券
     *
     * @param marketingGiftDto 参数
     * @return List
     */
    ResponseData<List<MarketingCouponDto>> getActiveCouponsByGift(MarketingGiftDto marketingGiftDto);

    /**
     * 获取乘客邀请礼包优惠券总额
     *
     * @param types 参数
     * @return BigDecimal
     */
    ResponseData<BigDecimal> getSumMoneyByTypes(List<Integer> types);

    /**
     * 获取乘客邀请礼包优惠券总额
     *
     * @param types   参数
     * @param getMode 参数
     * @return BigDecimal
     */
    ResponseData<BigDecimal> getSumMoneyByTypes(List<Integer> types, Integer getMode);

    /**
     * 获取注册和司机邀请礼包优惠券总额
     *
     * @param params 参数
     * @return BigDecimal
     */
    ResponseData<BigDecimal> getSumMoney(Map<String, Object> params);


    ResponseData<List<MarketingCouponDto>> getActiveCouponsByMap(Map<String, Object> params);
}